home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 35 / Amiga Format AFCD35 (Issue 119, Jan 1999).iso / -in_the_mag- / reader_requests / fredobbutils / bbsrc / bootmenu.s < prev    next >
Text File  |  1998-11-06  |  5KB  |  238 lines

  1. *** Bootblock spécial: Intro avec Menu et Scrolling de texte
  2.  
  3. Start:
  4.     MOVEM.L    D1-A6,-(A7)
  5.     MOVE    #$81c0,$DFF096
  6.     MOVE.L    #$5FC00,$0300.W    ;rastport à $5fc00
  7.     MOVE.L    #$5FD00,$0304.W    ;bitmap à $5fd00
  8.     LEA    $60000,A0    ;bitplanes à $60000
  9.     MOVE    #$1000,D0
  10. LB_0032    CLR.L    (A0)+
  11.     DBF    D0,LB_0032
  12.     MOVE.L    4.W,A6
  13.     move.l    $9c(a6),a6    ;execbase->gfxbase
  14.     LEA    CopList(PC),A0
  15.     move.l    50(a6),OldCop
  16.     MOVE.L    A0,50(A6)    ;2è coplist système
  17.     MOVE.L    $0304.W,A0    ;adresse du bitmap
  18.     MOVEQ    #1,D0        ;1 bitplane
  19.     MOVE    #704,D1        ;Largeur
  20.     MOVE    #256,D2        ;Hauteur
  21.     JSR    -$0186(A6)    ;InitBitmap()
  22.     MOVE.L    $0300.W,A1    ;adresse du rastport
  23.     JSR    -$00C6(A6)    ;InitRastport()
  24.     MOVE.L    $0300.W,A1
  25.     MOVE.L    $0304.W,A0
  26.     MOVE.L    A0,4(A1)
  27.     MOVE.L    #$60000,8(A0)    ;adr bitplanes ds struct Bitmap
  28. *** Ecrire le texte du Menu
  29.     MOVEQ    #$14,D6
  30.     LEA    MenuText(PC),A3
  31. LB_0084    MOVE.L    A3,-(A7)
  32.     MOVEQ    #-1,D1
  33. LB_0088    TST.B    (A3)+
  34.     DBEQ    D1,LB_0088
  35.     NOT.L    D1
  36.     MOVE.L    D1,-(A7)
  37.     MULU    #9,D1
  38.     LSR.L    #1,D1
  39.     MOVE.L    #$B4,D0
  40.     SUB.L    D1,D0
  41.     MOVE.L    D6,D1
  42.     MOVE.L    $0300.W,A1
  43.     JSR    -$00F0(A6)    ;Move()
  44.     MOVE.L    $0300.W,A1
  45.     MOVE.L    (A7)+,D0
  46.     MOVE.L    (A7)+,A0
  47.     JSR    -$003C(A6)    ;Text()
  48.     ADD    #9,D6
  49.     TST.B    (A3)
  50.     BNE.B    LB_0084
  51.     BSR.W    InitStars
  52.     LEA    ScrollText(PC),A4
  53.     moveq    #0,d7
  54. LB_00C8
  55.     JSR    -270(A6)    ;WaitTOF()    attendre prochaine VBL
  56.     MOVE.L    D7,$0320.W
  57.     BSR.W    Stars
  58.     MOVE.L    $0320.W,D7
  59.     BSR.B    LB_0110
  60. *** touche de fonction appuyée? si non boucle
  61.     CLR.L    D0
  62.     MOVE.B    $BFEC01,D0
  63.     NOT.B    D0
  64.     LSR.B    #1,D0
  65.     SUBI.B    #$50,D0
  66.     BCS.B    LB_00C8
  67.     CMP.B    #$09,D0
  68.     BHI.B    LB_00C8
  69.     MOVE.L    D0,$80.W    ;code touche ds vecteur trap 0
  70. *** restore coplist
  71.     move.l    OldCop(pc),50(a6)
  72. *** boote le système
  73.     LEA    dosname(PC),A1
  74.     MOVE.L    4.W,A6
  75.     JSR    -96(A6)        ;FindResident()
  76.     MOVE.L    D0,A0
  77.     MOVE.L    22(A0),A0
  78.     CLR.L    D0
  79.     MOVEM.L    (A7)+,D1-a6
  80. LB_010E    RTS    
  81. LB_0110    LEA    $DFF000,A0
  82.     BTST    #2,2(A0)    ;le blitter a fini son travail?
  83.     BNE.B    LB_0110        ;si non alors boucle
  84.     MOVE.L    #$62890,$50(A0)    ;blitter source A
  85.     MOVE.L    #$6288E,$54(A0)    ;blitter destination D
  86.     MOVE.L    #$002a002a,$64(A0)    ;modulo src/dest
  87.     MOVE    #$D9F0,$40(A0)        ;bltcon0 (controle blitter)
  88.     MOVE    #$0217,$58(A0)    ;bltsize (démarrage blitter & controle fenètre)
  89.     ADDQ    #1,D7
  90.     CMP    #3,D7
  91.     BNE.B    LB_010E
  92.     MOVE.L    $0300.W,A1
  93.     MOVE    #342,D0
  94.     MOVEQ    #124,D1
  95.     JSR    -$00F0(A6)    ;Move()
  96.     MOVE.L    $0300.W,A1
  97.     MOVE.L    A4,A0
  98.     addq.l    #1,a4
  99.     MOVEQ    #1,D0
  100.     CLR.L    D7
  101.     TST.B    (A4)
  102.     BNE.B    LB_0172
  103.     LEA    ScrollText(PC),A4
  104. LB_0172    JMP    -$003C(A6)    ;Text()
  105.  
  106.  
  107. InitStars:
  108.     LEA    $68000,A0
  109.     MOVE    #$E7FF,D0
  110. .clr    clr.b    (a0)+
  111.     DBF    D0,.clr
  112.     LEA    $7E800,A0
  113.     MOVEQ    #84,D0
  114. .lop1    MOVE.B    $DFF007,D5
  115.     MOVEQ    #0,D4
  116.     MOVE.B    $BFD800,D4
  117.     MOVE    D4,4(A0)
  118.     EOR.B    D5,D4
  119.     ASL    #6,D4
  120.     MOVE    D4,(A0)+
  121.     AND    #$00FF,D4
  122. .lop    DBF    D4,.lop
  123.     MOVE.B    $BFE801,D4
  124.     EOR.B    D4,D5
  125.     ASL    #6,D5
  126.     BSET    #$0F,D5
  127.     MOVE    D5,(A0)+
  128.     TST    (A0)+
  129.     CLR.L    (A0)+
  130.     DBF    D0,.lop1
  131.     RTS    
  132. Stars:
  133.     LEA    $7E800,A0
  134.     LEA    $68000,A1
  135.     LEA    $6C000,A2
  136.     MOVEQ    #84,D0
  137. LB_0242    MOVE.L    A0,-(A7)
  138.     MOVE.B    7(A0),D5
  139.     MOVE    8(A0),D6
  140.     BCLR    D5,(A1,D6.W)
  141.     BCLR    D5,(A2,D6.W)
  142.     SUBQ    #3,4(A0)
  143.     MOVE    4(A0),D4
  144.     BMI.B    LB_02BA
  145.     BEQ.B    LB_02BA
  146.     MOVE    (A0)+,D2
  147.     EXT.L    D2
  148.     DIVS    D4,D2
  149.     MOVE    (A0)+,D3
  150.     TST    (A0)+
  151.     EXT.L    D3
  152.     DIVS    D4,D3
  153.     ADD    #176,D2
  154.     BMI.B    LB_02BA
  155.     CMP    #352,D2
  156.     BGE.B    LB_02BA
  157.     ADDI    #128,D3
  158.     BMI.B    LB_02BA
  159.     LSL    #6,D3
  160.     MOVE    D2,D1
  161.     LSR    #3,D1
  162.     ADD    D1,D3
  163.     NOT.B    D2
  164.     ANDI.B    #$07,D2
  165.     MOVE    D2,(A0)+
  166.     MOVE    D3,(A0)+
  167.     MOVEQ    #1,D7
  168.     ROL.B    D2,D7
  169.     CMP    #225,D4
  170.     BLT.B    LB_02A2
  171.     OR.B    D7,(A2,D3.W)
  172.     BRA.B    LB_02AE
  173. LB_02A2    CMP    #150,D4
  174.     BLT.B    LB_02AE
  175.     OR.B    D7,(A2,D3.W)
  176.     BRA.B    LB_02B2
  177. LB_02AE    OR.B    D7,(A1,D3.W)
  178. LB_02B2    TST.L    (A7)+
  179. LB_02B4    DBF    D0,LB_0242
  180.     RTS    
  181. LB_02BA    MOVE    #1000,D7
  182.     MOVE.L    (A7)+,A0
  183.     MOVE    #300,4(A0)
  184.     MOVE.B    $DFF007,D5
  185.     MOVE.B    $BFD800,D4
  186.     EOR.B    D5,D4
  187.     EXT    D4
  188.     ASL    #6,D4
  189.     BMI.B    LB_02DE
  190.     ADD    D7,D4
  191.     BRA.B    LB_02E0
  192. LB_02DE    SUB    D7,D4
  193. LB_02E0    MOVE    D4,(A0)+
  194.     MOVE.B    $BFE801,D4
  195.     EOR.B    D4,D5
  196.     EXT    D5
  197.     ASL    #6,D5
  198.     BMI.B    LB_02F2
  199.     NEG    D5
  200. LB_02F2    SUB    D7,D5
  201.     MOVE    D5,(A0)+
  202.     TST    (A0)+
  203.     CLR.L    (A0)+
  204.     BRA.B    LB_02B4
  205. OldCop    dc.l    0
  206. CopList:
  207.  DC.w $008E,$2C81,$0100,$4600
  208.  DC.w $0108,$0014,$010A,$0000
  209.  DC.w $0090,$2CF4,$0092,$0030
  210.  DC.w $0094,$00D8,$0184,$0FFF
  211.  DC.w $0186,$0DDD,$0182,$0BBB
  212.  DC.w $0180,$0000,$0192,$0FFF
  213.  DC.w $0194,$0BBB,$00E0,$0006
  214.  DC.w $00E2,$8000,$00E8,$0006
  215.  DC.w $00EA,$C000,$00E4,$0006
  216.  DC.w $00E6,$0000,$00EC,$0006
  217.  DC.w $00EE,$002C,$AC01,$FFFE
  218.  DC.w $0108,$FF94
  219.  dc.w $FFFF,$FFFE        ;fin
  220. dosname    dc.b    "dos.library",0
  221.  
  222. MenuText:
  223.  dc.b "F R E D O",0
  224.  dc.b "PRESENTE",0
  225.  dc.b "UNE BOOTBLOCK-INTRO AVEC MENU!!!",0
  226.  dc.b " ",0
  227.  dc.b "Appuyez sur une",0
  228.  dc.b "touche de fonction",0
  229.  dc.b "Pour sortir....",0 
  230.  DC.B 0
  231. ScrollText:
  232.  dc.b "Salut tout le monde!  Frédo présente une nouvelle"
  233.  dc.b " Bootblock-Intro, avec un menu..."
  234.  dc.b "                    ",0
  235.  
  236. End:
  237.     dcb.b    512*2
  238.